# 质因数的个数
import math


def prime_factor_count(n):
    """4/10 4/10分
    我的方法, 使用埃氏筛法
    """

    def sieve(num):
        is_prime = [True] * (num + 1)
        is_prime[0] = is_prime[1] = False
        for i in range(2, int(math.sqrt(num)) + 1):
            if is_prime:
                for j in range(i * i, num + 1, i):
                    is_prime[j] = False
        return [i for i, prime in enumerate(is_prime) if prime]

    cnt = 0
    primes = sieve(n)
    for prime in primes:
        if n % prime == 0:
            cnt += 1

    return cnt


def prime_factor_count_opt(n):
    """非常妙的方法, 可以理解为埃氏筛法的反向操作
    重点在于 while n % i == 0: n = n // i
    例如 n=12，找到 i=2 后会将其除尽为 3,
    n=30, 找到 i=2, 得到15, 确保15不可能再被2整除; 此后 i=3, 除尽后为5; i=4 无法整除, 跳过; i=5时 i * i = 25 > 5,
    跳出 while i * i <= n: 循环, 而此时的n如果>1, 则必然是一个质因数 <= sqrt(n)
    可以确保每个质因数只计数一次。

    """
    res = 0
    i = 2
    while i * i <= n:
        if n % i == 0:
            res += 1
            while n % i == 0:
                n = n // i
        if i % 2 == 0:
            i += 1
        else:
            i += 2
    if n > 1:
        res += 1
    return res


if __name__ == '__main__':
    n = int(input())
    # print(prime_factor_count(n))
    print(prime_factor_count_opt(n))
